using System;
using System.Collections.Generic;
using System.Text;
using Entidades;
using DataAccessArquitectura;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

/*
 * Nombre archivo: gestiona_entradaBuilder.cs 
 *
 * Descripcion: Manipulacion de la tabla gestiona_entrada, con los metodos de consulta, grabado, actulaizacion
 * y recuperacion de un registro
 *
 * Autor: PLUS-EW
 * Fecha: 15/09/2011 16:24:18
 *
 * Historial
 * ---------------------------------------------------------
 * Autor            Fecha               Modificación
 *
 */

namespace Reglas_Negocio
{
	public class gestiona_entradaBuilder
	{
		private const enmTipoBaseDatos mTipoBD = enmTipoBaseDatos.MySQL;

		#region < METODOS PUBLICOS CONSULTA >
		public static DataTable ListarTodos()
		{
			try
			{
				return ListarTodos("");
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		public static DataTable ListarTodos(string filtro)
		{
			DataTable r = new DataTable();
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				r = bd.EjecutarSelectDs("*", "gestiona_entrada", filtro).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		public static bool Existe(string filtro)
		{
			int numero = 0;
			bool r = false;
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				numero = Convert.ToInt32(bd.EjecutarSelectScalar("COUNT(*)", "gestiona_entrada", filtro));
				r = (numero > 0);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		#endregion

		#region < METODOS PUBLICOS GRABADO >
		public static bool GrabarViaProcedimiento(gestiona_entrada datos)
		{
			int numero = 0;
			bool r = false;
			string filtro = "";
			try
			{
				string strConectionInsert = "INSERT INTO gestiona_entrada (fecha_gest_entrada,quien_hizo_gest_entrada,id_carga_hora_fk,observacion_gest_entrada,tipo_gest_entrada,estado_gest_entrada,tiempo_demora,fecha_autoriza) VALUES (?fecha_gest_entrada,?quien_hizo_gest_entrada,?id_carga_hora_fk,?observacion_gest_entrada,?tipo_gest_entrada,?estado_gest_entrada,?tiempo_demora,?fecha_autoriza);";
				string strConectionUpdate = "UPDATE gestiona_entrada SET fecha_gest_entrada = ?fecha_gest_entrada,quien_hizo_gest_entrada = ?quien_hizo_gest_entrada,id_carga_hora_fk = ?id_carga_hora_fk,observacion_gest_entrada = ?observacion_gest_entrada,tipo_gest_entrada = ?tipo_gest_entrada,estado_gest_entrada = ?estado_gest_entrada,tiempo_demora = ?tiempo_demora,fecha_autoriza = ?fecha_autoriza WHERE id_gest_entrada=?id_gest_entrada;";

				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				MySqlParameter psqlId_gest_entrada = new MySqlParameter("?id_gest_entrada", MySqlDbType.Int32);
				MySqlParameter psqlFecha_gest_entrada = new MySqlParameter("?fecha_gest_entrada", MySqlDbType.Datetime);
				MySqlParameter psqlQuien_hizo_gest_entrada = new MySqlParameter("?quien_hizo_gest_entrada", MySqlDbType.VarChar,200);
				MySqlParameter psqlId_carga_hora_fk = new MySqlParameter("?id_carga_hora_fk", MySqlDbType.Int32);
				MySqlParameter psqlObservacion_gest_entrada = new MySqlParameter("?observacion_gest_entrada", MySqlDbType.VarChar);
				MySqlParameter psqlTipo_gest_entrada = new MySqlParameter("?tipo_gest_entrada", MySqlDbType.VarChar,50);
				MySqlParameter psqlEstado_gest_entrada = new MySqlParameter("?estado_gest_entrada", MySqlDbType.VarChar,50);
				MySqlParameter psqlTiempo_demora = new MySqlParameter("?tiempo_demora", MySqlDbType.VarChar,100);
				MySqlParameter psqlFecha_autoriza = new MySqlParameter("?fecha_autoriza", MySqlDbType.Datetime);

				psqlId_gest_entrada.Value = datos.Id_gest_entrada;
				psqlFecha_gest_entrada.Value = datos.Fecha_gest_entrada;
				psqlQuien_hizo_gest_entrada.Value = datos.Quien_hizo_gest_entrada;
				psqlId_carga_hora_fk.Value = datos.Id_carga_hora_fk;
				psqlObservacion_gest_entrada.Value = datos.Observacion_gest_entrada;
				psqlTipo_gest_entrada.Value = datos.Tipo_gest_entrada;
				psqlEstado_gest_entrada.Value = datos.Estado_gest_entrada;
				psqlTiempo_demora.Value = datos.Tiempo_demora;
				psqlFecha_autoriza.Value = datos.Fecha_autoriza;

				if (!Existe("id_gest_entrada=" + datos.Id_gest_entrada))
				{
					numero = bd.EjecutarProcedimientoMySQL(strConectionInsert
							, psqlId_gest_entrada
							, psqlFecha_gest_entrada
							, psqlQuien_hizo_gest_entrada
							, psqlId_carga_hora_fk
							, psqlObservacion_gest_entrada
							, psqlTipo_gest_entrada
							, psqlEstado_gest_entrada
							, psqlTiempo_demora
							, psqlFecha_autoriza
							);
					MessageBox.Show("Se grabo [gestiona_entrada] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				else
				{
					numero = bd.EjecutarProcedimientoMySQL(strConectionUpdate
							, psqlId_gest_entrada
							, psqlFecha_gest_entrada
							, psqlQuien_hizo_gest_entrada
							, psqlId_carga_hora_fk
							, psqlObservacion_gest_entrada
							, psqlTipo_gest_entrada
							, psqlEstado_gest_entrada
							, psqlTiempo_demora
							, psqlFecha_autoriza
							);
					MessageBox.Show("Se actualizó [gestiona_entrada] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				r = (numero < 0);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static void GrabarViaSql(gestiona_entrada datos)
		{
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
                string filtro = string.Format("id_gest_entrada='{0}' OR (DATE(fecha_gest_entrada)='{1}' AND estado_gest_entrada='{2}' AND id_carga_hora_fk='{3}' AND DATE(fecha_autoriza)='{4}')", datos.Id_gest_entrada, ValidarBuilder.FormatoFechaSinHoraCompara(datos.Fecha_gest_entrada), datos.Estado_gest_entrada, datos.Id_carga_hora_fk,ValidarBuilder.FormatoFechaSinHoraCompara(datos.Fecha_autoriza));
				if (!Existe(filtro))
				{
					bd.EjecutarInsert("gestiona_entrada"
						, new CampoValor("fecha_gest_entrada",ValidarBuilder.FormatoFecha( datos.Fecha_gest_entrada))
						, new CampoValor("quien_hizo_gest_entrada", datos.Quien_hizo_gest_entrada)
						, new CampoValor("id_carga_hora_fk", datos.Id_carga_hora_fk.ToString())
						, new CampoValor("observacion_gest_entrada", datos.Observacion_gest_entrada)
						, new CampoValor("tipo_gest_entrada", datos.Tipo_gest_entrada)
						, new CampoValor("estado_gest_entrada", datos.Estado_gest_entrada)
						, new CampoValor("tiempo_demora", datos.Tiempo_demora)
						, new CampoValor("fecha_autoriza",ValidarBuilder.FormatoFecha( datos.Fecha_autoriza))
						);
                    //MessageBox.Show("Se grabo [gestiona_entrada] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				else
				{
					bd.EjecutarUpdate("gestiona_entrada", filtro
						, new CampoValor("fecha_gest_entrada",ValidarBuilder.FormatoFecha( datos.Fecha_gest_entrada))
						, new CampoValor("quien_hizo_gest_entrada", datos.Quien_hizo_gest_entrada)
						, new CampoValor("id_carga_hora_fk", datos.Id_carga_hora_fk.ToString())
						, new CampoValor("observacion_gest_entrada", datos.Observacion_gest_entrada)
						, new CampoValor("tipo_gest_entrada", datos.Tipo_gest_entrada)
						, new CampoValor("estado_gest_entrada", datos.Estado_gest_entrada)
						, new CampoValor("tiempo_demora", datos.Tiempo_demora)
						, new CampoValor("fecha_autoriza",ValidarBuilder.FormatoFecha( datos.Fecha_autoriza))
						);
                    //MessageBox.Show("Se actualizó [gestiona_entrada] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		#endregion

		#region < METODOS PUBLICOS RECUPERACION >
		public static gestiona_entrada Recuperar(string filtro)
		{
			gestiona_entrada r = new gestiona_entrada();
			try
			{
				if (Existe(filtro))
				{
					DataTable ds = ListarTodos(filtro);
					r.Id_gest_entrada = Convert.ToInt32(ds.Rows[0]["id_gest_entrada"]);
					if (ds.Rows[0]["fecha_gest_entrada"] != System.DBNull.Value)
						r.Fecha_gest_entrada = Convert.ToDateTime(ds.Rows[0]["fecha_gest_entrada"]);
					if (ds.Rows[0]["fecha_gest_entrada"] == System.DBNull.Value)
						r.Fecha_gest_entrada = DateTime.Now;
					if (ds.Rows[0]["quien_hizo_gest_entrada"] != System.DBNull.Value)
						r.Quien_hizo_gest_entrada = ds.Rows[0]["quien_hizo_gest_entrada"].ToString();
					if (ds.Rows[0]["quien_hizo_gest_entrada"] == System.DBNull.Value)
						r.Quien_hizo_gest_entrada = "";
					r.Id_carga_hora_fk = Convert.ToInt32(ds.Rows[0]["id_carga_hora_fk"]);
					if (ds.Rows[0]["observacion_gest_entrada"] != System.DBNull.Value)
						r.Observacion_gest_entrada = ds.Rows[0]["observacion_gest_entrada"].ToString();
					if (ds.Rows[0]["observacion_gest_entrada"] == System.DBNull.Value)
						r.Observacion_gest_entrada = "";
					if (ds.Rows[0]["tipo_gest_entrada"] != System.DBNull.Value)
						r.Tipo_gest_entrada = ds.Rows[0]["tipo_gest_entrada"].ToString();
					if (ds.Rows[0]["tipo_gest_entrada"] == System.DBNull.Value)
						r.Tipo_gest_entrada = "";
					if (ds.Rows[0]["estado_gest_entrada"] != System.DBNull.Value)
						r.Estado_gest_entrada = ds.Rows[0]["estado_gest_entrada"].ToString();
					if (ds.Rows[0]["estado_gest_entrada"] == System.DBNull.Value)
						r.Estado_gest_entrada = "";
					if (ds.Rows[0]["tiempo_demora"] != System.DBNull.Value)
						r.Tiempo_demora = ds.Rows[0]["tiempo_demora"].ToString();
					if (ds.Rows[0]["tiempo_demora"] == System.DBNull.Value)
						r.Tiempo_demora = "";
					if (ds.Rows[0]["fecha_autoriza"] != System.DBNull.Value)
						r.Fecha_autoriza = Convert.ToDateTime(ds.Rows[0]["fecha_autoriza"]);
					if (ds.Rows[0]["fecha_autoriza"] == System.DBNull.Value)
						r.Fecha_autoriza = DateTime.Now;
					r.Horario_empresa = horario_empresaBuilder.Recuperar("id_hora=" + ds.Rows[0]["id_carga_hora_fk"]);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

        public static gestiona_entrada Recuperar_carga_horaria(string filtro)
        {
            gestiona_entrada r = new gestiona_entrada();
            try
            {
                DataTable ds = ListarTodos_Joins_Horario_empresa(filtro);
                if (ds.Rows.Count>0)
                {                    
                    r.Id_gest_entrada = Convert.ToInt32(ds.Rows[0]["id_gest_entrada"]);
                    if (ds.Rows[0]["fecha_gest_entrada"] != System.DBNull.Value)
                        r.Fecha_gest_entrada = Convert.ToDateTime(ds.Rows[0]["fecha_gest_entrada"]);
                    if (ds.Rows[0]["fecha_gest_entrada"] == System.DBNull.Value)
                        r.Fecha_gest_entrada = DateTime.Now;
                    if (ds.Rows[0]["quien_hizo_gest_entrada"] != System.DBNull.Value)
                        r.Quien_hizo_gest_entrada = ds.Rows[0]["quien_hizo_gest_entrada"].ToString();
                    if (ds.Rows[0]["quien_hizo_gest_entrada"] == System.DBNull.Value)
                        r.Quien_hizo_gest_entrada = "";
                    r.Id_carga_hora_fk = Convert.ToInt32(ds.Rows[0]["id_carga_hora_fk"]);
                    if (ds.Rows[0]["observacion_gest_entrada"] != System.DBNull.Value)
                        r.Observacion_gest_entrada = ds.Rows[0]["observacion_gest_entrada"].ToString();
                    if (ds.Rows[0]["observacion_gest_entrada"] == System.DBNull.Value)
                        r.Observacion_gest_entrada = "";
                    if (ds.Rows[0]["tipo_gest_entrada"] != System.DBNull.Value)
                        r.Tipo_gest_entrada = ds.Rows[0]["tipo_gest_entrada"].ToString();
                    if (ds.Rows[0]["tipo_gest_entrada"] == System.DBNull.Value)
                        r.Tipo_gest_entrada = "";
                    if (ds.Rows[0]["estado_gest_entrada"] != System.DBNull.Value)
                        r.Estado_gest_entrada = ds.Rows[0]["estado_gest_entrada"].ToString();
                    if (ds.Rows[0]["estado_gest_entrada"] == System.DBNull.Value)
                        r.Estado_gest_entrada = "";
                    if (ds.Rows[0]["tiempo_demora"] != System.DBNull.Value)
                        r.Tiempo_demora = ds.Rows[0]["tiempo_demora"].ToString();
                    if (ds.Rows[0]["tiempo_demora"] == System.DBNull.Value)
                        r.Tiempo_demora = "";
                    if (ds.Rows[0]["fecha_autoriza"] != System.DBNull.Value)
                        r.Fecha_autoriza = Convert.ToDateTime(ds.Rows[0]["fecha_autoriza"]);
                    if (ds.Rows[0]["fecha_autoriza"] == System.DBNull.Value)
                        r.Fecha_autoriza = DateTime.Now;
                    r.Horario_empresa = horario_empresaBuilder.Recuperar("id_hora=" + ds.Rows[0]["id_carga_hora_fk"]);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return r;
        }
		#endregion

		#region < METODOS PUBLICOS BORRADO >
		public static void Borrar(string filtro)
		{
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				bd.EjecutarDelete("gestiona_entrada", filtro);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		public static void BorrarTodos()
		{
			try
			{
				Borrar("");
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		#endregion

		#region < METODOS PUBLICOS EXTRAS >
		public static void Listar_Combobox(ComboBox cmbgestiona_entrada, string filtro, string nombre_display)
		{
			cmbgestiona_entrada.DataSource = ListarTodos(filtro);
			cmbgestiona_entrada.DisplayMember = nombre_display;
			cmbgestiona_entrada.ValueMember = "id_gest_entrada";
		}

		public static DataTable ListarTodos_Alias(string filtro)
		{
			DataTable r = new DataTable();
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				r = bd.EjecutarSelectDs("id_gest_entrada AS id_gest_entrada,fecha_gest_entrada AS fecha_gest_entrada,quien_hizo_gest_entrada AS quien_hizo_gest_entrada,id_carga_hora_fk AS id_carga_hora_fk,observacion_gest_entrada AS observacion_gest_entrada,tipo_gest_entrada AS tipo_gest_entrada,estado_gest_entrada AS estado_gest_entrada,tiempo_demora AS tiempo_demora,fecha_autoriza AS fecha_autoriza", "gestiona_entrada", filtro).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static List<gestiona_entrada> ListarTodos_List(string filtro)
		{
			List<gestiona_entrada> r = new List<gestiona_entrada>();
			try
			{
				DataTable dt = ListarTodos(filtro);
				for (int i = 0; i < dt.Rows.Count; i++)
					r.Add(Recuperar("id_gest_entrada="+dt.Rows[i]["id_gest_entrada"]));
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Horario_empresa(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "gestiona_entrada.id_carga_hora_fk = horario_empresa.id_hora";
				else
					joins_ = "gestiona_entrada.id_carga_hora_fk = horario_empresa.id_hora AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "gestiona_entrada, horario_empresa","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Horario_empresa_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "gestiona_entrada.id_gest_entrada AS gestiona_entrada.id_gest_entrada,gestiona_entrada.fecha_gest_entrada AS gestiona_entrada.fecha_gest_entrada,gestiona_entrada.quien_hizo_gest_entrada AS gestiona_entrada.quien_hizo_gest_entrada,gestiona_entrada.id_carga_hora_fk AS gestiona_entrada.id_carga_hora_fk,gestiona_entrada.observacion_gest_entrada AS gestiona_entrada.observacion_gest_entrada,gestiona_entrada.tipo_gest_entrada AS gestiona_entrada.tipo_gest_entrada,gestiona_entrada.estado_gest_entrada AS gestiona_entrada.estado_gest_entrada,gestiona_entrada.tiempo_demora AS gestiona_entrada.tiempo_demora,gestiona_entrada.fecha_autoriza AS gestiona_entrada.fecha_autoriza," + 
							 "horario_empresa.id_hora AS horario_empresa.id_hora,horario_empresa.nombre_hora AS horario_empresa.nombre_hora,horario_empresa.hora_inicio_hora AS horario_empresa.hora_inicio_hora,horario_empresa.hora_fin_hora AS horario_empresa.hora_fin_hora,horario_empresa.jornada AS horario_empresa.jornada,horario_empresa.id_emp_hora_fk AS horario_empresa.id_emp_hora_fk,horario_empresa.estado_hora AS horario_empresa.estado_hora,horario_empresa.fecha_registro_hora AS horario_empresa.fecha_registro_hora,horario_empresa.cat_jor_id_fk AS horario_empresa.cat_jor_id_fk,horario_empresa.caduca_hora AS horario_empresa.caduca_hora";
			try
			{
				if(filtro=="")
					joins_ = "gestiona_entrada.id_carga_hora_fk = horario_empresa.id_hora";
				else
					joins_ = "gestiona_entrada.id_carga_hora_fk = horario_empresa.id_hora AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "gestiona_entrada, horario_empresa",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "gestiona_entrada.id_carga_hora_fk = horario_empresa.id_hora ";
				else
					joins_ = "gestiona_entrada.id_carga_hora_fk = horario_empresa.id_hora AND  " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "horario_empresa,gestiona_entrada","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "gestiona_entrada.id_gest_entrada AS gestiona_entrada.id_gest_entrada,gestiona_entrada.fecha_gest_entrada AS gestiona_entrada.fecha_gest_entrada,gestiona_entrada.quien_hizo_gest_entrada AS gestiona_entrada.quien_hizo_gest_entrada,gestiona_entrada.id_carga_hora_fk AS gestiona_entrada.id_carga_hora_fk,gestiona_entrada.observacion_gest_entrada AS gestiona_entrada.observacion_gest_entrada,gestiona_entrada.tipo_gest_entrada AS gestiona_entrada.tipo_gest_entrada,gestiona_entrada.estado_gest_entrada AS gestiona_entrada.estado_gest_entrada,gestiona_entrada.tiempo_demora AS gestiona_entrada.tiempo_demora,gestiona_entrada.fecha_autoriza AS gestiona_entrada.fecha_autoriza," + 
							 "horario_empresa.id_hora AS horario_empresa.id_hora,horario_empresa.nombre_hora AS horario_empresa.nombre_hora,horario_empresa.hora_inicio_hora AS horario_empresa.hora_inicio_hora,horario_empresa.hora_fin_hora AS horario_empresa.hora_fin_hora,horario_empresa.jornada AS horario_empresa.jornada,horario_empresa.id_emp_hora_fk AS horario_empresa.id_emp_hora_fk,horario_empresa.estado_hora AS horario_empresa.estado_hora,horario_empresa.fecha_registro_hora AS horario_empresa.fecha_registro_hora,horario_empresa.cat_jor_id_fk AS horario_empresa.cat_jor_id_fk,horario_empresa.caduca_hora AS horario_empresa.caduca_hora";
			try
			{
				if(filtro=="")
					joins_ = "gestiona_entrada.id_carga_hora_fk = horario_empresa.id_hora ";
				else
					joins_ = "gestiona_entrada.id_carga_hora_fk = horario_empresa.id_hora AND  " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "horario_empresa,gestiona_entrada",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

        public static DataTable ListarTodos_Joins_Alias_personaliza(string filtro)
        {
            DataTable r = new DataTable();
            string joins_ = "";
            string campos_ = "gestiona_entrada.id_gest_entrada AS Codigo,gestiona_entrada.quien_hizo_gest_entrada AS \"Autorizado por\",gestiona_entrada.observacion_gest_entrada AS Observacion,gestiona_entrada.tipo_gest_entrada AS Tipo,gestiona_entrada.estado_gest_entrada AS Estado,gestiona_entrada.tiempo_demora AS Utiliza,gestiona_entrada.fecha_autoriza AS Fecha," +
                             "horario_empresa.nombre_hora AS Dia,horario_empresa.jornada AS Jornada";
            try
            {
                if (filtro == "")
                    joins_ = "gestiona_entrada.id_carga_hora_fk = horario_empresa.id_hora ";
                else
                    joins_ = "gestiona_entrada.id_carga_hora_fk = horario_empresa.id_hora AND  " + filtro;
                r = ValidarBuilder.ListarTodos(joins_, "horario_empresa,gestiona_entrada", campos_).Tables[0];
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return r;
        }

		#endregion

		#region < METODOS PUBLICOS VALIDACION >
		public static gestiona_entrada valida_campos_gestiona_entrada(Control ctrl_id_gest_entrada,DateTime dpk_fecha_gest_entrada,TextBox txt_quien_hizo_gest_entrada,Control ctrl_id_carga_hora_fk,TextBox txt_observacion_gest_entrada,TextBox txt_tipo_gest_entrada,TextBox txt_estado_gest_entrada,TextBox txt_tiempo_demora,DateTime dpk_fecha_autoriza)
		{
			bool r = true;
			gestiona_entrada new_gestiona_entrada = new gestiona_entrada();
			try
			{
				if(ctrl_id_gest_entrada.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_gest_entrada = (TextBox)ctrl_id_gest_entrada;
					if (txt_id_gest_entrada.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_gest_entrada","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_gest_entrada.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_gest_entrada","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_gestiona_entrada.Id_gest_entrada = Convert.ToInt32(txt_id_gest_entrada.Text);
				}
				if(ctrl_id_gest_entrada.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_gest_entrada = (ComboBox)ctrl_id_gest_entrada;
					if (cmb_id_gest_entrada.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_gest_entrada","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_gestiona_entrada.Id_gest_entrada = Convert.ToInt32(cmb_id_gest_entrada.SelectedValue);
				}
				if (r)
					new_gestiona_entrada.Fecha_gest_entrada = dpk_fecha_gest_entrada;
				if (txt_quien_hizo_gest_entrada.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la quien_hizo_gest_entrada","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_gestiona_entrada.Quien_hizo_gest_entrada = txt_quien_hizo_gest_entrada.Text;
				if(ctrl_id_carga_hora_fk.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_carga_hora_fk = (TextBox)ctrl_id_carga_hora_fk;
					if (txt_id_carga_hora_fk.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_carga_hora_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_carga_hora_fk.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_carga_hora_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_gestiona_entrada.Id_carga_hora_fk = Convert.ToInt32(txt_id_carga_hora_fk.Text);
				}
				if(ctrl_id_carga_hora_fk.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_carga_hora_fk = (ComboBox)ctrl_id_carga_hora_fk;
					if (cmb_id_carga_hora_fk.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_carga_hora_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_gestiona_entrada.Id_carga_hora_fk = Convert.ToInt32(cmb_id_carga_hora_fk.SelectedValue);
				}
				if (txt_observacion_gest_entrada.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la observacion_gest_entrada","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_gestiona_entrada.Observacion_gest_entrada = txt_observacion_gest_entrada.Text;
				if (txt_tipo_gest_entrada.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la tipo_gest_entrada","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_gestiona_entrada.Tipo_gest_entrada = txt_tipo_gest_entrada.Text;
				if (txt_estado_gest_entrada.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la estado_gest_entrada","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_gestiona_entrada.Estado_gest_entrada = txt_estado_gest_entrada.Text;
				if (txt_tiempo_demora.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la tiempo_demora","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_gestiona_entrada.Tiempo_demora = txt_tiempo_demora.Text;
				if (r)
					new_gestiona_entrada.Fecha_autoriza = dpk_fecha_autoriza;

				if(!r)
					new_gestiona_entrada = null;
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return new_gestiona_entrada;
		}

		public static void grabar_actualizar_registro(Control ctrl_id_gest_entrada,DateTime dpk_fecha_gest_entrada,TextBox txt_quien_hizo_gest_entrada,Control ctrl_id_carga_hora_fk,TextBox txt_observacion_gest_entrada,TextBox txt_tipo_gest_entrada,TextBox txt_estado_gest_entrada,TextBox txt_tiempo_demora,DateTime dpk_fecha_autoriza)
		{
			try
			{
				gestiona_entrada new_gestiona_entrada =valida_campos_gestiona_entrada(ctrl_id_gest_entrada,dpk_fecha_gest_entrada,txt_quien_hizo_gest_entrada,ctrl_id_carga_hora_fk,txt_observacion_gest_entrada,txt_tipo_gest_entrada,txt_estado_gest_entrada,txt_tiempo_demora,dpk_fecha_autoriza); 
				if(new_gestiona_entrada!=null)
					GrabarViaSql(new_gestiona_entrada);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}

		#endregion

	}
}
